package com.swe.chums.dao;

import com.swe.chums.dao.UserTagTypeDao;
import com.swe.chums.dao.model.UserTagType;
import com.swe.chums.dao.model.UserTagTypePk;
import com.swe.chums.dao.exceptions.UserTagTypeDaoException;
import java.util.List;

public interface UserTagTypeDao
{
	/**
	 * Method 'insert'
	 * 
	 * @param dto
	 * @return UserTagTypePk
	 */
	public UserTagTypePk insert(UserTagType dto);

	/** 
	 * Updates a single row in the user_tag_type table.
	 */
	public void update(UserTagTypePk pk, UserTagType dto) throws UserTagTypeDaoException;

	/** 
	 * Deletes a single row in the user_tag_type table.
	 */
	public void delete(UserTagTypePk pk) throws UserTagTypeDaoException;

	/** 
	 * Returns all rows from the user_tag_type table that match the criteria 'id = :id'.
	 */
	public UserTagType findByPrimaryKey(int id) throws UserTagTypeDaoException;

	/** 
	 * Returns all rows from the user_tag_type table that match the criteria ''.
	 */
	public List<UserTagType> findAll() throws UserTagTypeDaoException;

	/** 
	 * Returns all rows from the user_tag_type table that match the criteria 'user_id = :userId'.
	 */
	public List<UserTagType> findByUser(int userId) throws UserTagTypeDaoException;

	/** 
	 * Returns all rows from the user_tag_type table that match the criteria 'tag_id = :tagId'.
	 */
	public List<UserTagType> findByTagType(int tagId) throws UserTagTypeDaoException;

	/** 
	 * Returns all rows from the user_tag_type table that match the criteria 'id = :id'.
	 */
	public List<UserTagType> findWhereIdEquals(int id) throws UserTagTypeDaoException;

	/** 
	 * Returns all rows from the user_tag_type table that match the criteria 'user_id = :userId'.
	 */
	public List<UserTagType> findWhereUserIdEquals(int userId) throws UserTagTypeDaoException;

	/** 
	 * Returns all rows from the user_tag_type table that match the criteria 'tag_id = :tagId'.
	 */
	public List<UserTagType> findWhereTagIdEquals(int tagId) throws UserTagTypeDaoException;
        
        /** 
	 * Returns all rows from the user_tag_type table that match the criteria 'tag_id = :tagId' and 'user_id = :userId'.
	 */
        public List<UserTagType> findWhereUserIdandTagIdEquals(int userId, int tagId) throws UserTagTypeDaoException;

	/** 
	 * Returns the rows from the user_tag_type table that matches the specified primary-key value.
	 */
	public UserTagType findByPrimaryKey(UserTagTypePk pk) throws UserTagTypeDaoException;

}
